#ifndef PROTOTYPE_H
#define PROTOTYPE_H
#include<iostream>
#include<memory>
#include<mutex>
// 原型模式基类
class Prototype
{
public:
    Prototype();
    virtual ~Prototype()= default;
    virtual std::unique_ptr<Prototype> clone() const = 0;
    virtual void performTask() const = 0;

};
//具体原型类

class ConcretePrototype:public Prototype{
public:
    ConcretePrototype()= default;
    ~ConcretePrototype() =default;
    std::unique_ptr<Prototype> clone() const override;
    void performTask() const override;
};
#endif // PROTOTYPE_H
